package com.some;


public class Test0001 {
    //快速排序{1,2,3,4,5,6,7,9,10}
    //快速排序使用的是分治的思想，选出一个关键字，通过排序讲序列分割成两部分
    public static void quickSort(int[] array, int start, int end) {
        if (start>end){
            return;
        }
        int base=array[start];
        int x=start;
        int y=end;

        while (x<y){
            while (x<y&&base<array[y]){//右边出现小于base的数
                y--;
            }
            if (x<y){//将小于base的数填到缺口处
                array[x]=array[y];
                x++;
            }
            while (x<y&&array[x]<base){
                x++;
            }
            if (x<y){
                array[y]=array[x];
                y--;
            }
        }
        //x=y的时候退出循环,把最初的数填入数组中
        array[x]=base;

        quickSort(array,start,x-1);
        quickSort(array,x+1,end);
    }

    public static void main(String[] args) {
        int[] ints = {8, 6, 7, 5, 9, 4, 1, 10, 2, 3};
        quickSort(ints, 0, ints.length - 1);
        for (int anInt : ints) {
            System.out.print(anInt + ",");
        }
    }
}
